﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace t07_interface
{
    class Program
    {
        static void Main(string[] args)
        {
            BankCard card1 = new BankCard("张三");
            CreditCard card2 = new CreditCard("李四");
            Ipay[] pays = { card1, card2 ,
                new BankCard("王五"){ Money=150}
            };
            foreach(Ipay pay in pays)
            {
                if(pay.Pay(200))
                {
                    Console.WriteLine("{0}付款成功",pay.GetName());
                }
                else
                {
                    Console.WriteLine("{0}付款失败", pay.GetName());
                }
            }
            Console.ReadKey();
        }
    }
}
///<summary>
/// Ixxxx形式表示接口 xxxable
/// 
/// 付款接口契约
///</summary>
interface Ipay
{
    bool Pay(decimal price);
    string GetName();
}

/// <summary>
/// 借记卡类
/// </summary>
class BankCard :Ipay
{
    //字段
    private string name;

    public BankCard(string name)
    {
        this.name = name;
    }
    //属性
    public decimal Money = 1000;




    //生成相关代码：Alt+Enter

    public string GetName()
    {
        return name;
    }
    public bool Pay(decimal price)
    {
        if(Money>=price)
        {
            Money -= price;
            return true;
        }
        else
        {
            return false;
        }
    }
}
/// <summary>
/// 信用卡
/// </summary>
class CreditCard : Ipay
{
    private string name;

    public CreditCard(string name)
    {
        this.name = name;
    }
    public decimal Overdraft = 0;

    public string GetName()
    {
        return this.name;
    }
    public bool Pay(decimal price)
    {
        Overdraft += price;
        return true;

    }
    
}
